	// Documento JavaScript 

			/********************************************************************************************************
			*																										*
			* 				Arquivo de M�scara JavaScript para Implemtentacao dos Projetos da FSWUniCEUB					*
			*																										*
			*********************************************************************************************************
			*																										*
			*	--Nome da Fun��o			-> Descricao do que a fun��o faz										*
			*																										*
			*	--destacaEdicao	            -> Fun��o que destaca o campo em edi��o.		                        *
			*	--saiEdicao	             	-> Fun��o para tirar o destaque do campo em edi��o.                     *
			*	--mascara	             	-> Fun��o para controlar/selecionar a m�scara solicitada.               *
			*	--execmascara	            -> Fun��o para executar a m�scara solicitada.                           *			
			*	--soNumeros					-> Fun��o que permite apenas n�meros.        							*
			*	--soLetras					-> Fun��o que permite apenas letras. Letras sem acentuacao.				*
			*	--soLetrasEspacos			-> Fun��o que permite espacos e letras com acentuacao.   				*
			*	--telefone					-> Fun��o que cria a m�scara para telefone.         					*
			*	--data   					-> Fun��o que cria a m�scara para data.             					*
			*	--hora   					-> Fun��o que cria a m�scara para hora.	         					    *
			*	--cnpj  					-> Fun��o que cria a m�scara para cnpj.              					*
			*	--cpf	    				-> Fun��o que cria a m�scara para cpf.              					*
			*	--matricula					-> Fun��o que cria a m�scara para matricula.         					*
			*	--cep    					-> Fun��o que cria a m�scara para cep.               					*
			*	--site   					-> Fun��o que cria a m�scara para site.             					*
			*	--formatamoney				-> Fun��o que cria a m�scara para formatar dineheiro.					*			
			*																										*
			*********************************************************************************************************


/****************************************************
* Registro de Vers�o
* N�mero da vers�o -/- data -/- O que foi modificado ( problemas resolvidos ) 
*
* Vers�o 1.0 -/- 03 outubro de 2008	-/- Cria��o do Arquivo de validacao JavaScript com os c�digos...
*
*
*
****************************************************/

/****************************************************
* Web Browser ( Navegadores em que foi testado)
*****************************************************
* -> IE6 
* -> IE7 
* -> FIREFOX 2.0
*
****** -- Reportar Problemas de Incompatibilidade --
*
* - N�mero - Descri��o -/ STATUS /-
*
*
*****************************************************/



/* Fun��o para destacar o campo em edi��o.*/
function destacaEdicao(campo){
 classesarray = campo.className.split(" ");
 classes = "";
 for(i = 0; i < classesarray.length; i++)
  if (classesarray[i] != "edicao")
   classes = classes + " " + classesarray[i];
 classes = classes + " edicao";
 campo.className = classes;
 return true;
}

/*Fun��o para tirar o destaque do campo em edi��o.*/
function saiEdicao(campo){
 classesarray = campo.className.split(" ");
 classes = "";
 for(i = 0; i < classesarray.length; i++)
  if (classesarray[i] != "edicao")
   classes = classes + " " + classesarray[i];
 campo.className = classes;
 return true;
}

/* Fun��o Controladora*/
function mascara(o,f){
    v_obj=o;
    v_fun=f;
    setTimeout("execmascara()",1);
}
/* Fun��o Executa mascara solicitada*/
function execmascara(){
    v_obj.value=v_fun(v_obj.value);
}

/*Fun��o que permite apenas n�meros.*/
function soNumeros(v){
    v=v.replace(/\D/g,"");                              //Remove tudo o que n�o � n�mero.
    return v
}

/*Fun��o que permite apenas letras.*/
function soLetras(v){
    v=v.replace(/[^a-zA-z\-]/g,"");                //Permite apenas letras e h�fen.
    return v
}

/*Fun��o que permite letras e espa�os.*/
function soLetrasEspacos(v){
    v=v.replace(/[0-9]/g,"");             //Permite caracteres diferente de num�rico.
    return v
}

/*Fun��o que cria m�scara do TELEFONE.*/
function telefone(v){
    v=v.replace(/\D/g,"");                              //Remove tudo o que n�o � n�mero.
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2");      //Coloca par�nteses em volta dos dois primeiros d�gitos.
    v=v.replace(/(\d{4})(\d)/,"$1-$2");          //Coloca h�fen entre o quarto e o quinto d�gito.
    return v
}

/*Fun��o que cria m�scara da DATA*/
function data(v){
    v=v.replace(/\D/g,"");                              //Remove tudo o que n�o � n�mero.
    v=v.replace(/(\d{2})(\d)/,"$1/$2");         //Coloca uma barra entre o segundo e o terceiro d�gito.
    v=v.replace(/(\d{2})(\d)/,"$1/$2");         //Coloca uma barra entre o quarto e o quinto d�gito.
    return v
}

/*Fun��o que cria m�scara da HORA*/
function hora(v){
    v=v.replace(/\D/g,"");                              //Remove tudo o que n�o � n�mero.
    v=v.replace(/(\d{2})(\d)/,"$1:$2");         //Coloca uma dois pontos entre o segundo e o terceiro d�gito.
    v=v.replace(/(\d{2})(\d)/,"$1:$2");         //Coloca uma dois pontos entre o quarto e o quinto d�gito.
    return v
}

/*Fun��o que cria m�scara do CNPJ.*/
function cnpj(v){
    v=v.replace(/\D/g,"");                                               //Remove tudo o que n�o � n�mero.
    v=v.replace(/^(\d{2})(\d)/,"$1.$2");                         //Coloca ponto entre o segundo e o terceiro d�gito.
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3");      //Coloca ponto entre o quinto e o sexto d�gito.
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2");                      //Coloca uma barra entre o oitavo e o nono d�gito.
    v=v.replace(/(\d{4})(\d)/,"$1-$2");                          //Coloca um h�fen entre o d�cimo segundo e o d�cimo terceiro d�gito.	 
    return v
}

/*Fun��o que cria m�scara do CPF.*/
function cpf(v){
    v=v.replace(/\D/g,"");                                 //Remove tudo o que n�o � n�mero.
    v=v.replace(/(\d{3})(\d)/,"$1.$2");             //Coloca um ponto entre o terceiro e o quarto d�gito.
    v=v.replace(/(\d{3})(\d)/,"$1.$2");             //Coloca um ponto entre o sexto e o s�timo d�gito.	
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2");   //Coloca um h�fen entre o nono e o d�cimo d�gito.
    return v
}

/*Fun��o que cria m�scara do MATR�CULA*/
function matricula(v){
    v=v.replace(/\D/g,"");                                 //Remove tudo o que n�o � n�mero.
    v=v.replace(/(\d{7})(\d)/,"$1-$2");            //Coloca um h�fen entre o pen�ltimo e �ltimo d�gito.
    return v
}

/*Fun��o que cria m�scara do CEP*/
function cep(v){
    v=v.replace(/\D/g,"");                                 //Remove tudo o que n�o � n�mero.
    v=v.replace(/^(\d{5})(\d)/,"$1-$2");           //Coloca um h�fen entre o quinto e o sexto d�gito.
    return v
}

	/* FALTA FAZER MASCARA PARA RG */
function rg(v){
    return v
}

function decimal(v) {
  return demaskvalue(v,true); 
}

function site(v){
    v=v.replace(/^http:\/\/?/,"");
    dominio=v;
    caminho="";
    if(v.indexOf("/")>-1) {
        dominio=v.split("/")[0];
        caminho=v.replace(/[^\/]*/,"");
    }
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"");
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"");
    caminho=caminho.replace(/([\?&])=/,"$1");
    if(caminho!="")dominio=dominio.replace(/\.+$/,"");
    v="http://"+dominio+caminho;
    return v
}

/* Formata valores monet�rios*/

documentall = document.all;
/*
* fun��o para formata��o de valores monet�rios */

function formatamoney(c) {
    var t = this; if(c == undefined) c = 2;		
    var p, d = (t=t.split("."))[1].substr(0, c);
    for(p = (t=t[0]).length; (p-=3) >= 1;) {
	        t = t.substr(0,p) + "." + t.substr(p);
    }
    return t+","+d+Array(c+1-d.length).join(0);
}

String.prototype.formatCurrency=formatamoney

function demaskvalue(valor, currency){
/*
* Se currency � false, retorna o valor sem apenas com os n�meros. Se � true, os dois �ltimos caracteres s�o considerados as 
* casas decimais
*/
var val2 = '';
var strCheck = '0123456789';
var len = valor.length;
	if (len== 0){
		return 0.00;
	}

	if (currency ==true){	
		/* Elimina os zeros � esquerda 
		* a vari�vel  <i> passa a ser a localiza��o do primeiro caractere ap�s os zeros e 
		* val2 cont�m os caracteres (descontando os zeros � esquerda)
		*/
		
		for(var i = 0; i < len; i++)
			if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;
		
		for(; i < len; i++){
			if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);
		}

		if(val2.length==0) return "0.00";
		if (val2.length==1)return "0.0" + val2;
		if (val2.length==2)return "0." + val2;
		
		var parte1 = val2.substring(0,val2.length-2);
		var parte2 = val2.substring(val2.length-2);
		var returnvalue = parte1 + "." + parte2;
		return returnvalue;
		
	}
	else{
			/* currency � false: retornamos os valores COM os zeros � esquerda, 
			* sem considerar os �ltimos 2 algarismos como casas decimais 
			*/
			val3 ="";
			for(var k=0; k < len; k++){
				if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);
			}			
	return val3;
	}
}

function reais(obj,event){

var whichCode = (window.Event) ? event.which : event.keyCode;
/*
Executa a formata��o ap�s o backspace nos navegadores !document.all
*/
if (whichCode == 8 && !documentall) {	
/*
Previne a a��o padr�o nos navegadores
*/
	if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}else{ // internet explorer
			event.returnValue = false;
	}
	var valor = obj.value;
	var x = valor.substring(0,valor.length-1);
	obj.value= demaskvalue(x,true).formatCurrency();
	return false;
}
/*
Executa o Formata Reais e faz o format currency novamente ap�s o backspace
*/
FormataReais(obj,'.',',',event);
} // end reais


function backspace(obj,event){
/*
Essa fun��o basicamente altera o  backspace nos input com m�scara reais para os navegadores IE e opera.
O IE n�o detecta o keycode 8 no evento keypress, por isso, tratamos no keydown.
Como o opera suporta o infame document.all, tratamos dele na mesma parte do c�digo.
*/

var whichCode = (window.Event) ? event.which : event.keyCode;
if (whichCode == 8 && documentall) {	
	var valor = obj.value;
	var x = valor.substring(0,valor.length-1);
	var y = demaskvalue(x,true).formatCurrency();

	obj.value =""; //necess�rio para o opera
	obj.value += y;
	
	if (event.preventDefault){ //standart browsers
			event.preventDefault();
		}else{ // internet explorer
			event.returnValue = false;
	}
	return false;

	}// end if		
}// end backspace

function FormataReais(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

//if (whichCode == 8 ) return true; //backspace - estamos tratando disso em outra fun��o no keydown
if (whichCode == 0 ) return true;
if (whichCode == 9 ) return true; //tecla tab
if (whichCode == 13) return true; //tecla enter
if (whichCode == 16) return true; //shift internet explorer
if (whichCode == 17) return true; //control no internet explorer
if (whichCode == 27 ) return true; //tecla esc
if (whichCode == 34 ) return true; //tecla end
if (whichCode == 35 ) return true;//tecla end
if (whichCode == 36 ) return true; //tecla home

/*
O trecho abaixo previne a a��o padr�o nos navegadores. N�o estamos inserindo o caractere normalmente, mas via script
*/

if (e.preventDefault){ //standart browsers
		e.preventDefault()
	}else{ // internet explorer
		e.returnValue = false
}

var key = String.fromCharCode(whichCode);  // Valor para o c�digo da Chave
if (strCheck.indexOf(key) == -1) return false;  // Chave inv�lida

/*
Concatenamos ao value o keycode de key, se esse for um n�mero
*/
fld.value += key;

var len = fld.value.length;
var bodeaux = demaskvalue(fld.value,true).formatCurrency();
fld.value=bodeaux;

/*
Essa parte da fun��o t�o somente move o cursor para o final no opera. Atualmente n�o existe como mov�-lo no konqueror.
*/
  if (fld.createTextRange) {
    var range = fld.createTextRange();
    range.collapse(false);
    range.select();
  }
  else if (fld.setSelectionRange) {
    fld.focus();
    var length = fld.value.length;
    fld.setSelectionRange(length, length);
  }
  return false;

}




































